package com.zhiche.lisa.bms.service.utils.common.identityCodeUtil;

import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * @Author: liuanshun
 * @Description: code生成定义方法
 * @Date: Create in 14:13 2018/11/3
 */
public abstract class CodeSuper {
    //存储自增id
    protected AtomicInteger codeId = null;
    //字符映射
    protected Map<String, String> mapper = null;
    //转换格式
    protected String codeFactory = null;

    /**
     * 初始化id自增号
     *
     * @return
     */
    public abstract CodeSuper init();

    /**
     * 获取下一个id号五位数
     *
     * @return
     */
    protected String getNextIncrementId() {
        int newNum = codeId.incrementAndGet();
        //数字长度为5位，长度不够数字前面补0
        String newStrNum = String.format("%05d", newNum);
        return newStrNum;
    }

    /**
     * 按格式定义返回转换字符串
     *
     * @param valueMapping
     * @return
     */
    public String getNextCode(Map<String, String> valueMapping) {
        return codeFactory;
    }
}
